home *** CD-ROM | disk | FTP | other *** search
/ Interactive Algebra & Tri…f Guided Study Companion / Interactive Algebra and Trigonometry - A Self-Guided Study Companion.iso / at.mst < prev    next >
Encoding:
Text File  |  1997-04-16  |  8.4 KB  |  309 lines

  1. '**************************************************************************
  2. '* INSTALLATION FOR INTERACTIVE PRECALC SERIES 
  3. '*
  4. '* TO CHANGE FOR USE WITH OTHER BOOKS,
  5. '* 1) MAKE MODIFICATIONS TO THE FOLLOWING:
  6. '*      SetTitle
  7. '*      szInf$ = 
  8. '*      ini$ = 
  9. '*      line below IF iniExists% = 1 THEN
  10. '*      DEST$ =        
  11. '*      INSTALL routine
  12. '**************************************************************************
  13. CONST WS_VISIBLE=&H10000000
  14. CONST WS_BORDER =&H00800000
  15. CONST WS_CLIPCHILDREN =&H02000000
  16. CONST GWL_STYLE =-16
  17. CONST SW_SHOWMAXIMIZED=3
  18.  
  19. DECLARE FUNCTION ShowWindow  LIB "user.exe" (hWnd%,iShow%) AS INTEGER
  20. DECLARE FUNCTION SetWindowLong LIB "user.exe" (hWnd%, offset%, style&) AS LONG
  21. 'DECLARE FUNCTION WinExec LIB "KERNEL.exe" (EXENAME$, how%) AS INTEGER
  22.  
  23.  
  24. '$DEFINE DEBUG  ''Define for script development/debugging
  25.  
  26. '$INCLUDE 'setupapi.inc'
  27. '$INCLUDE 'msdetect.inc'
  28.  
  29. ''Dialog ID's
  30. CONST WELCOME       = 100
  31. CONST ASKQUIT       = 200
  32. CONST DESTPATH      = 300
  33. CONST EXITFAILURE   = 400
  34. CONST EXITQUIT      = 600
  35. CONST EXITSUCCESS   = 700
  36. CONST APPHELP       = 900
  37. CONST BADPATH       = 6400
  38. CONST NOQTWIN      = 8000
  39. CONST EXITSUCCESS95   = 750
  40.  
  41. ''Bitmap ID
  42. CONST LOGO = 1
  43.  
  44. GLOBAL DEST$        ''Default destination directory.
  45. GLOBAL OPTCUR$      ''Option selection from option dialog.
  46. GLOBAL WINDIR$
  47. GLOBAL QTWINSTALLED%
  48. GLOBAL ini$
  49. GLOBAL iniExists%
  50. GLOBAL PrevInstallDir$
  51. GLOBAL PrevInstallExists%
  52. GLOBAL CURDLG$
  53. GLOBAL WinMajor%
  54. GLOBAL WinMinor%
  55.  
  56. DECLARE SUB Install
  57. DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
  58.  
  59.  
  60. INIT:
  61.     CUIDLL$ = "mscuistf.dll"            ''Custom user interface dll
  62.     HELPPROC$ = "FHelpDlgProc"          ''Help dialog procedure
  63.  
  64.     SetBitmap CUIDLL$, LOGO
  65.     SetTitle "Interactive Algebra and Trigonometry Install"
  66.     
  67.     ' THESE WILL MAXIMIZE THE WINDOW
  68.     hWnd%=HwndFrame()
  69.     i1&=SetWindowLong(hWnd%,GWL_STYLE,WS_VISIBLE+WS_BORDER+WS_CLIPCHILDREN)
  70.     j1%=ShowWindow(hWnd%,SW_SHOWMAXIMIZED)
  71.  
  72.     '' this gets the path where the temp directory is to go
  73.     szInf$ = GetSymbolValue("STF_SRCINFPATH")
  74.     
  75.     IF szInf$ = "" THEN
  76.         szInf$ = GetSymbolValue("STF_CWDDIR") + "AT.INF"
  77.     END IF
  78.     ReadInfFile szInf$
  79.  
  80.     OPTCUR$ = "1"
  81.  
  82. '$IFDEF DEBUG
  83.     i% = SetSizeCheckMode(scmOnIgnore)    '' could use scmOff; def = scmOnFatal
  84.     WinDrive$ = MID$(GetWindowsDir, 1, 1)
  85.     IF IsDriveValid(WinDrive$) = 0 THEN
  86.         i% = DoMsgBox("Windows drive ('"+WinDrive$+"') is not a valid drive.", "DEBUG", MB_TASKMODAL+MB_ICONHAND+MB_OK)
  87.         GOTO QUIT
  88.     END IF
  89. '$ENDIF ''DEBUG
  90.  
  91.  
  92.  
  93. WELCOME:
  94.     CURDLG$ = "WELCOME"
  95.     ' get the name of the windows directory in FInfoDlgProc
  96.     sz$ = UIStartDlg(CUIDLL$, WELCOME, "FInfoDlgProc", APPHELP, HELPPROC$)
  97.     WINDIR$ = GetSymbolValue("WINDIR")     ' retrieve it
  98.     RemoveSymbol("WINDIR")                 ' remove it
  99.  
  100.     IF sz$ = "CONTINUE" THEN
  101.         UIPop 1
  102.     ELSE
  103.         GOTO ASKQUIT
  104.     END IF
  105.  
  106. CHECKQTW:
  107.     ' check to see if qtw 2.0 or greater is installed
  108.     ' NEED THE INDEO 3.2 DRIVER, SO CHECK THAT
  109.     
  110.  
  111.     WinSysDir$ = GetWindowsSysDir
  112.     
  113.     TestFile$ = WinSysDir$ + "QTIM.DLL"
  114.     FileExists% = DoesFileExist (TestFile$, femExists)
  115.     QTWINSTALLED% = 0
  116.     IF FileExists% = 1 THEN
  117.         ' check the date to see if 3/23/95 or newer
  118.         FileDate$ = GetDateOfFile(TestFile$)
  119.         FileYear% = VAL(MID$(FileDate$, 1, 4))
  120.         IF FileYear% > 1994 THEN
  121.             QTWINSTALLED% = 1
  122.         ELSE
  123.             GOTO WARNQTW
  124.         END IF
  125.     ELSE
  126.         GOTO WARNQTW
  127.     END IF
  128.  
  129.     GOTO CHECKPREVINSTALL
  130.     
  131.  
  132.  
  133. WARNQTW:
  134.     CURDLG$ = "NOQTW"
  135.     sz$ = UIStartDlg(CUIDLL$, NOQTWIN, "FInfoDlgProc", APPHELP, HELPPROC$)
  136.     IF sz$ = "CONTINUE" THEN
  137.         UIPop 1
  138.     ELSE
  139.         GOTO ASKQUIT
  140.     END IF
  141.     GOTO CHECKPREVINSTALL
  142.  
  143.  
  144. ERRQUIT:
  145.     i% = DoMsgBox("There has been an error, please install again.", "Setup Message", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  146.     END
  147.  
  148. ' this is when the user is already commited to leaving (already had an "are you sure",
  149. ' this puts up "worked", "failed", "quit"
  150. QUIT:
  151.     ON ERROR GOTO ERRQUIT
  152.  
  153.     WinMajor% = GetWindowsMajorVersion()
  154.     WinMinor% = GetWindowsMinorVersion()
  155.     
  156.     IF ERR = 0 THEN
  157.        IF (WinMajor% = 3 AND WinMinor% < 95) THEN
  158.           dlg% = EXITSUCCESS
  159.        ELSE
  160.           dlg% = EXITSUCCESS95
  161.        END IF
  162.     ELSEIF ERR = STFQUIT THEN
  163.         dlg% = EXITQUIT
  164.     ELSE
  165.         dlg% = EXITFAILURE
  166.     END IF
  167. QUITL1:
  168.     sz$ = UIStartDlg(CUIDLL$, dlg%, "FInfo0DlgProc", 0, "")
  169.     IF sz$ = "REACTIVATE" THEN
  170.         GOTO QUITL1
  171.     END IF
  172.     UIPop 1
  173.     END
  174.  
  175. ASKQUIT:
  176.     sz$ = UIStartDlg(CUIDLL$, ASKQUIT, "FQuitDlgProc", 0, "")
  177. ' they hit exit
  178.     IF sz$ = "EXIT" THEN
  179.         UIPopAll
  180.         END
  181.         ERR = STFQUIT
  182.     ELSEIF sz$ = "REACTIVATE" THEN
  183.         GOTO ASKQUIT
  184.     ELSE
  185. ' they hit go back (continue the install)
  186.         UIPop 1
  187.     END IF
  188.     
  189.    ' RETURN TO WHERE THEY WERE
  190.     IF CURDLG$ = "WELCOME" THEN
  191.         GOTO WELCOME
  192.     ELSEIF CURDLG$ = "NOQTW" THEN
  193.         GOTO WARNQTW
  194.     END IF
  195.  
  196.  
  197. CHECKPREVINSTALL:
  198.     ' see if the .ini file exists
  199.     ini$ = MakePath(WINDIR$, "AT.INI")
  200.     iniExists% = DoesFileExist (ini$, femExists)
  201.     DEST$ = ""
  202.     IF iniExists% = 1 THEN
  203.         i% = DoMsgBox("A version of Interactive Algebra and Trigonometry has already been installed.  Do you want to overwrite it?", "Overwrite?", 8212)
  204.         ' IF THEY ANSWER NO
  205.         IF i% = 7 THEN
  206.             CURDLG$ = "CHECKPREVINSTALL"
  207.             GOTO ASKQUIT
  208.         END IF
  209.       ' IN MOST OTHER INSTALLS, WE GET THE FILE NAME FROM THE INI FILE.
  210.       ' BUT I DECIDED TO ASK THEM AGAIN WHERE THEY WOULD LIKE THE DIRECTORY TO GO
  211.       ' BECAUSE THEY MAY BE INSTALLING AGAIN FOR THAT REASON.    
  212.     END IF 
  213.     GOTO GETPATH
  214.     
  215.  
  216. GETPATH:
  217.     DEST$ = "C:\AT"
  218.     SetSymbolValue "EditTextIn", DEST$
  219.     SetSymbolValue "EditFocus", "END"
  220.     
  221. GETPATHL1:
  222.     sz$ = UIStartDlg(CUIDLL$, DESTPATH, "FEditDlgProc", APPHELP, HELPPROC$)
  223.     DEST$ = GetSymbolValue("EditTextOut")
  224.  
  225.     ' only has continue or exit
  226.     IF sz$ = "CONTINUE" THEN
  227.         IF IsDirWritable(DEST$) = 0 THEN
  228.             GOTO BADPATH
  229.             GOTO GETPATHL1
  230.         END IF
  231.         UIPop 1
  232.     ELSEIF sz$ = "REACTIVATE" THEN
  233.         GOTO GETPATHL1
  234.     ELSE
  235.         ' THEY HIT EXIT
  236.         CURDLG$ = "GETPATH"
  237.         GOTO ASKQUIT
  238.     END IF
  239.  
  240.     ' MAKE SURE THERE ISN'T A "\" AT THE END OF THE PATH THEY ENTERED
  241.     tempchar$ = MID$(DEST$,LEN(DEST$), 1)
  242.     IF tempchar$ = "\" THEN
  243.         DEST$ = MID$(DEST$,1,LEN(DEST$) - 1)
  244.     END IF
  245.  
  246.     Install
  247.     GOTO QUIT
  248.  
  249. BADPATH:
  250.     sz$ = UIStartDlg(CUIDLL$, BADPATH, "FInfo0DlgProc", 0, "")
  251.     IF sz$ = "REACTIVATE" THEN
  252.         GOTO BADPATH
  253.     END IF
  254.     UIPop 1
  255.     GOTO GETPATHL1
  256.     
  257.  
  258.  
  259. '**
  260. '** Purpose:
  261. '**     Builds the copy list and performs all installation operations.
  262. '** Arguments:
  263. '**     none.
  264. '** Returns:
  265. '**     none.
  266. '*************************************************************************
  267. SUB Install STATIC
  268.  
  269.     ' REMOVED SECOND ini$ ASSIGNMENT
  270.     CreateIniKeyValue ini$, "FILES", "CA_DIR", DEST$, cmoOverwrite
  271.  
  272.     ' DEST$ NOW HOLDS THE NAME OF THE DIR TO INSTALL TO
  273.     CreateDir DEST$, cmoNone
  274.  
  275.     ' the directory where the setup is located on the disk
  276.     SrcDir$ = GetSymbolValue("STF_SRCDIR")
  277.  
  278.     CreateProgmanGroup "Int Alg and Trig", "", cmoNone
  279.     ShowProgmanGroup "Int Alg and Trig", 1, cmoNone
  280.     CreateProgmanItem "Int Alg and Trig", "Int Alg and Trig",  MakePath(SrcDir$,"mtb40run.exe pimaina.tbk"), MakePath (SrcDir$, "pre_icon.ico"), cmoOverwrite
  281. END SUB
  282.  
  283. '**
  284. '** Purpose:
  285. '**     Appends a file name to the end of a directory path,
  286. '**     inserting a backslash character as needed.
  287. '** Arguments:
  288. '**     szDir$  - full directory path (with optional ending "\")
  289. '**     szFile$ - filename to append to directory
  290. '** Returns:
  291. '**     Resulting fully qualified path name.
  292. '*************************************************************************
  293. FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
  294.     IF szDir$ = "" THEN
  295.         MakePath = szFile$
  296.     ELSEIF szFile$ = "" THEN
  297.         MakePath = szDir$
  298.     ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
  299.         MakePath = szDir$ + szFile$
  300.     ELSE
  301.         MakePath = szDir$ + "\" + szFile$
  302.     END IF
  303. END FUNCTION
  304.  
  305.  
  306.  
  307.  
  308.  
  309.